#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
//int main()
//{
//	int a = 5;
//	int b = -3;
//	return 0;
//}

//每四个二进制位转换为一个16进制位
//000000000000000000000000 00000101
//00 00 00 05
//10000000 00000000 00000000 0000 0011
//11111111 11111111 11111111 1111 1100
//11111111 11111111 11111111 1111 1101
  //ff ff ff fd

//进位超过32位时，也就是说进位到33位时，第33位要舍弃，32位的机器

//int main()
//{
//	int a = 6;
//	int b = 4;
//	int c = a - b;//6-4   6+(-4)  
//	//00000000 00000000 00000000 00000110
//	// 
//	//10000000 00000000 00000000 00000100
//	//11111111 11111111 11111111 11111011
//	//11111111 11111111 11111111 11111100
//	// 
//	//00000000 00000000 00000000 00000110
//
//	//00000000 00000000 00000000 00000010
//	return 0;
//}

//8个比特位为一个字节

//int main()
//{
//	int a = 0x11223344;
//	char* p = (char*)&a;//&a是整型指针，想要转换成char*，强制转换
//				       // (char*)&a
//	if ((*p) == 68)
//	{
//		printf("小端字节序存储");
//	}
//	else
//	{
//		printf("大端字节序存储");
//	}
//	return 0;
//}

//大端存储（大端字节序存储）：把一个数据的低位字节的内容存放在高地址上，高位字节的内容
//存放在低地址上。

//小端存储（小端字节序存储）：把一个数据的低位字节的内容放在低地址上，高位字节的内容
//放在高地址上
//int check_system()
//{
//	int a = 1;
//	char* p = (char*)&a;
//	if (1 == *p)
//	{
//		return 1;
//	}
//	else
//	{
//		return 0;
//	}
//}
//int main()
//{
//	int ret=check_system();
//	if (1 == ret)
//	{
//		printf("小端字节序存储\n");
//	}
//	else
//	{
//		printf("大端字节序存储\n");
//	}
//	return 0;
//}


//char check_system()
//{
//	int a = 1;
//	return *(char*)&a;
//}
//int main()
//{
//	char ret = check_system();
//	if (1 == ret)
//	{
//		printf("小端字节序存储\n");
//	}
//	else
//	{
//		printf("大端字节序存储\n");
//	}
//	return 0;
//}


//int main()
//{
//	int a = 0x11001144;
//	char* p = (char*)&a;//&a是整型指针，想要转换成char*，强制转换
//				       // (char*)&a
//	p++;
//	short* q = (short*)p;
//	if ((*q) == 17)
//	{
//		printf("小端字节序存储");
//	}
//	else
//	{
//		printf("大端字节序存储");
//	}
//	return 0;
//}

//只要在内存中存储超过一个字节就会存在一个大小端的问题

//int main()
//{
//	char a = -1;
//	//-1是整型，char a 需要截断，在内存中存放之后在进行截断
//	//10000000 00000000 00000000 00000001
//	//11111111 11111111 11111111 11111110
//	//11111111 11111111 11111111 11111111
//	//a 11111111
//	//整型提升是按照符号位来进行提升的
//	//a的整型提升 1
//	//11111111 11111111 11111111 11111111  补码
//	//10000000 00000000 00000000 00000000   
//	//10000000 00000000 00000000 00000001  原码-1
//	signed char b = -1;
//	//b=-1是一个整型，同上
//	unsigned char c = -1;
//	//c=-1是一个整型
//	//10000000 00000000 00000000 00000001
//	//11111111 11111111 11111111 11111110
//	//11111111 11111111 11111111 11111111
//	//转换位unsigned char 
//	// c 11111111   无符号数的整型提升，高位要补零
//	//00000000 00000000 00000000 11111111
//	//在内存中存储的认为是有符号数
//	printf("a=%d,b=%d,c=%d",a,b,c);
//	return 0;
//}


//int main()
//{
//	char a = 128;
//	//整型提升是按照被要提升的数据的类型判断的
//	printf("%d\n",a);
//	return 0;
//}

int main()
{
	int i = -20;
	unsigned int j= 10;
	printf("%d\n",i+j);
}